home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
games
/
stonedlx.zoo
/
stonedlx.gfa
(
.txt
)
< prev
next >
Wrap
GFA-BASIC Atari
|
1991-08-17
|
28KB
|
1,268 lines
CLEAR
pl#=1
npl#=1
js#=1
skill_level#=1
IF XBIOS(4)<>0
ALERT 3," | TO PLAY STONE-AGE|GO TO LOW RESOLUTION",1,"EXIT",b#
SYSTEM
ENDIF
DIM stone#(32,19),stickx#(10),sticky#(10),points#(2),player#(2)
DIM strip$(100),file$(50),zeit#(2),punkte#(2)
DIM screen$(95,31),wlvl#(2),man#(2),score#(2)
DIM keydecode%(10)
file$=""
GOSUB screen_init
FOR i#=0 TO 50
READ strip$(i#)
EXIT IF strip$(i#)="***"
NEXT i#
strip$(i#)=""
strip$(i#+1)=""
GOSUB makecolor
SETCOLOR 15,7,7,7
DATA Info, Instructions
DATA ----------------
DATA 1,2,3,4,5,6,""
DATA Disk, Load World , Save World ,""
DATA Play, PLAYERS , One Player , Two Players , LEVEL TO START , Level 1 , Level 2 , Level 3 , Level 4 , Level 5 , Joy Stick , Keypad ,""
DATA Genesis, New World , Create/Edit ,""
DATA Leave, Bye-Bye ,""
DATA ***
CLS
GET 75,45,235,130,help$
GET 75,45,235,90,name_input$
GET 0,0,309,179,clear$
GET 0,0,9,9,blank$
GOSUB mainscreen
DO
ON MENU
' Print At(1,1);Mousex,Mousey
' Z$=Inkey$
' Print At(1,3);Len(Z$),Left$(Z$)''Asc(Z$),Right$(Z$)''Asc(Right$(Z$))
LOOP
PROCEDURE screen_init
FOR x#=1 TO 95
screen$(x#,1)="0000000000000000000000000000000"
NEXT x#
screen$(1,1)="NO"
screen$(20,1)="NO"
screen$(39,1)="NO"
screen$(58,1)="NO"
screen$(77,1)="NO"
RETURN
PROCEDURE mainscreen
MENU strip$()
MENU 15,2
MENU 18,2
MENU 15+npl#,1
MENU 24+js#,1
SHOWM
DEFTEXT 12,2,0,32
TEXT 15,50,"S T O N E - A G E"
TEXT 55,80,"D E L U X E !"
DEFTEXT 3,0,0,13
TEXT 58,120,"Modified By John Hickey"
DEFTEXT 7,0,0,4
ttte$="From An ST Conversion By David Addison"
TEXT 48,170,ttte$
DEFTEXT 7,0,0,4
TEXT 70,190,"Of A Program By Klaus Kramer!"
'
ON MENU GOSUB menu
RETURN
PROCEDURE menu
a$=strip$(MENU(0))
IF MID$(a$,1,6)=" Level"
STICK 0
ALERT 3,"| Would You Like To| Practice Or Play?",2,"Practice|PLAY!",b#
play#=0
IF b#=2
play#=1
STICK 0
ALERT 3,"| Select Your SKILL Level",2,"Simple|Tougher|HARD!",b#
skill_level#=b#
ENDIF
FOR x#=1 TO 2
wlvl#(x#)=VAL(MID$(a$,8))
NEXT x#
HIDEM
GOSUB stoneage_play
ENDIF
IF a$=" New World "
STICK 0
ALERT 1,"| This Will OBLITERATE| All Levels!",2,"Do It!|I Goofed!",b#
IF b#=1
GOSUB screen_init
ENDIF
ENDIF
IF a$=" Load World "
GOSUB load_world
ENDIF
IF a$=" Save World "
GOSUB save_world
ENDIF
IF a$=" Create/Edit "
GOSUB create_edit
ENDIF
IF a$=" Bye-Bye "
STICK 0
ALERT 1,"Time To Go?",2,"Yep|NO!",b#
IF b#=1
SETCOLOR 0,7,7,7
SETCOLOR 15,0,0,0
SETCOLOR 1,7,0,0
SETCOLOR 2,0,7,0
END
ENDIF
ENDIF
IF a$=" One Player "
npl#=1
ENDIF
IF a$=" Two Players "
npl#=2
ENDIF
IF a$=" Instructions"
GOSUB instructions
ENDIF
IF a$=" Joy Stick "
js#=0
ENDIF
IF a$=" Keypad "
js#=1
ENDIF
MENU OFF
MENU 16,0
MENU 17,0
MENU 24,0
MENU 25,0
MENU 15+npl#,1
MENU 24+js#,1
RETURN
REPEAT
a$=INKEY$
UNTIL a$<>""
'
PROCEDURE load_world
FILESELECT "\*.SCR",file$,a$
IF a$<>""
file$=a$
DEFMOUSE 2
OPEN "I",#1,a$
FOR x#=1 TO 95
INPUT #1,a$
screen$(x#,1)=a$
NEXT x#
CLOSE
ENDIF
DEFMOUSE 0
RETURN
PROCEDURE save_world
FILESELECT "\*.scr",file$,a$
IF a$<>""
DEFMOUSE 2
file$=a$
OPEN "O",#2,a$
FOR x#=1 TO 95
PRINT #2,screen$(x#,1)
NEXT x#
CLOSE
ENDIF
DEFMOUSE 0
RETURN
PROCEDURE create_edit
GOSUB init
CLS
COLOR 2
LINE 0,180,310,180
LINE 310,0,310,180
PUT 15,183,willi$,3
PUT 48,183,rock$,3
PUT 85,183,cabbage$,3
PUT 125,183,wall$,3
PUT 159,183,world$,3
SETCOLOR 15,7,7,7
DEFTEXT 3,0,0,4
TEXT 5,198,"Willi Rock Cabbage Wall World"
DEFTEXT 7,0,0,4
TEXT 149,198,"World"
DEFTEXT 2,16,0,6
TEXT 185,190,"1 2 3 4 5"
DEFTEXT 6,0,0,4
TEXT 195,198,"Level Names"
DEFTEXT 3,0,4
TEXT 285,188,"MAIN"
TEXT 285,198,"MENU"
wlvl#(pl#)=1
GOSUB world_select
DO
WHILE MOUSEK=0
z$=INKEY$
IF MID$(z$,2,1)="b"
GOSUB help_edit
ENDIF
' Print At(1,1);Mousex,Mousey
WEND
mx#=MOUSEX
my#=MOUSEY
mk#=MOUSEK
EXIT IF (mx#>283 AND mx#<310) AND my#>180
IF my#>180
IF mx#>183 AND mx#<273 AND my#<=190
IF mk#=1
wlvl#(pl#)=ABS(-1+(mx#>202)+(mx#>223)+(mx#>243)+(mx#>263))
GOSUB world_select
ELSE
GOSUB copy_erase
ENDIF
ENDIF
IF mx#>183 AND mx#<273 AND my#>190
GOSUB change_name
ENDIF
IF mx#>12 AND mx#<169
DEFTEXT 3,0,0,4
TEXT 5,198,"Willi Rock Cabbage Wall World"
DEFTEXT 7,0,0,4
IF mx#<26
drm$=willi$
drm#=2
TEXT 5,198,"Willi"
ENDIF
IF mx#>45 AND mx#<58
drm$=rock$
drm#=1
TEXT 41,198,"Rock"
ENDIF
IF mx#>83 AND mx#<95
drm$=cabbage$
drm#=3
TEXT 71,198,"Cabbage"
ENDIF
IF mx#>123 AND mx#<135
drm$=wall$
drm#=4
TEXT 119,198,"Wall"
ENDIF
IF mx#>157 AND mx#<169
drm$=world$
drm#=0
TEXT 149,198,"World"
ENDIF
ENDIF
ENDIF
IF my#<180 AND mx#<310
IF mk#=2
drt$=drm$
drt#=drm#
drm$=blank$
drm#=5
ENDIF
PUT INT(mx#/10)*10,INT(my#/10)*10,drm$
a$=screen$((wlvl#(pl#)-1)*19+2+INT(my#/10),1)
MID$(a$,INT(mx#/10)+1,1)=STR$(drm#)
screen$((wlvl#(pl#)-1)*19+2+INT(my#/10),1)=a$
IF mk#=2
drm$=drt$
drm#=drt#
ENDIF
ENDIF
LOOP
CLS
GOSUB mainscreen
RETURN
'
PROCEDURE copy_erase
STICK 0
ALERT 2,"| Copy/Erase Level | | Which One?",3,"Copy|Erase|Neither",b#
IF b#=1
GOSUB copy
ENDIF
IF b#=2
GOSUB erase
ENDIF
RETURN
'
PROCEDURE copy
GET 75,45,235,90,temp$
PUT 75,45,name_input$
BOX 77,47,233,88
PRINT AT(12,8);"CLICK On Level"
PRINT AT(12,9);"To Copy FROM"
DO
REPEAT
UNTIL MOUSEK
mx#=MOUSEX
my#=MOUSEY
mk#=MOUSEK
EXIT IF mx#>183 AND mx#<273 AND my#<=190
LOOP
cfrom#=ABS(-1+(mx#>202)+(mx#>223)+(mx#>243)+(mx#>263))
PUT 75,45,name_input$
BOX 77,47,233,88
PRINT AT(12,8);"CLICK On Level"
PRINT AT(12,9);" To Copy TO"
PAUSE 10
DO
REPEAT
UNTIL MOUSEK
mx#=MOUSEX
my#=MOUSEY
mk#=MOUSEK
EXIT IF mx#>183 AND mx#<273 AND my#<=190
LOOP
cto#=ABS(-1+(mx#>202)+(mx#>223)+(mx#>243)+(mx#>263))
PUT 75,45,temp$
mx#=0
my#=0
mk#=0
PAUSE 10
FOR i#=1 TO 19
screen$(i#+(cto#-1)*19,1)=screen$(i#+(cfrom#-1)*19,1)
NEXT i#
wlvl#(pl#)=cto#
GOSUB world_select
RETURN
'
PROCEDURE erase
GET 75,45,235,90,temp$
PUT 75,45,name_input$
BOX 77,47,233,88
PRINT AT(12,8);"CLICK On Level"
PRINT AT(12,9);" To ERASE"
DO
REPEAT
UNTIL MOUSEK
mx#=MOUSEX
my#=MOUSEY
mk#=MOUSEK
EXIT IF mx#>183 AND mx#<273 AND my#<=190
LOOP
elvl#=ABS(-1+(mx#>202)+(mx#>223)+(mx#>243)+(mx#>263))
PUT 75,45,name_input$
PAUSE 10
PUT 75,45,temp$
b$="| Erase Level "+STR$(elvl#)+"? "
STICK 0
ALERT 2,b$,2,"You Bet|Oops,No!",b#
IF b#=1
FOR i#=1 TO 19
screen$(i#+(elvl#-1)*19,1)="0000000000000000000000000000000"
NEXT i#
screen$(1+(elvl#-1)*19,1)="NO"
wlvl#(pl#)=elvl#
GOSUB world_select
ENDIF
RETURN
'
PROCEDURE world_select
HIDEM
PUT 0,0,clear$
DEFFILL 0,2,8
a$="188207230249270"
FOR y#=1 TO 5
FILL VAL(MID$(a$,((y#-1)*3+1),3)),189
NEXT y#
DEFFILL 7,2,8
FILL VAL(MID$(a$,((wlvl#(pl#)-1)*3+1),3)),189
GOSUB show_screen
IF na$="NO"
GOSUB change_name
ENDIF
DEFTEXT 6,0,0,4
TEXT 183,198," "
TEXT 183,198,na$
screen$(1+(wlvl#(pl#)-1)*19,1)=na$
SHOWM
RETURN
'
PROCEDURE change_name
GET 75,45,235,90,temp$
PUT 75,45,name_input$
BOX 77,47,233,87